// 打包配置  monorepo
// (1) 获取打包 目录
// (2)

const fs = require('fs')
const execa = require('execa')

const dirs = fs.readdirSync("packages").filter(p => {
    if(!fs.statSync(`packages/${p}`).isDirectory) {
        return false
    }
    return true
})
// 进行打包，并行打包
async function build(target) {
    console.log("target: ", target)
    // ★ 开启子线程进行打包
    // -c 执行rollup环境配置,环境变量
    await execa('rollup', ['-c', '--environment',`TARGET:${target}`])
}
async function runParaller(dirs, itemfn) {
    // 遍历dirs
    let result = []
    for(let item of dirs) {
        result.push(itemfn(item))
    }
    return Promise.all(result) // 存放打包的promise，等待这里的打包执行完毕之后，调用成功
}
// 进行打包 并行打包
runParaller(dirs, build).then(() => { // promise
    console.log('成功')
})

// ★ 文件夹才会进行打包
console.log("dirs: ", dirs) // dirs:  [ 'reactivity', 'shared' ]

